Приветствую Вас на страницах сайта Joom4all. Сегодня поговорим о том, как оптимизировать базу данных популярной системы управления контентом Joomla 3.
Все мы знаем (возможно кто-то об этом узнает из этой статьи), что с увеличением размера базы данных растет нагрузка на сервер, кроме того уменьшается доступное дисковое пространство на хостинге. Ну и что скажите Вы, не зря же мы платим деньги за хостинг. Так-то оно так, но стоимость хостинга напрямую зависит от Ваших потребностей и чем выше нагрузка на сайт, тем больше Вам придется за него платить.
Если финансовая составляющая Вас особо не интересует, и Вы готовы платить неограниченные деньги за работу сайта, тогда задумайтесь о другой проблеме - скорости загрузки сайта. База данных, в которой накопилось достаточное количество мусора, не лучшим образом сказывается на скорости загрузки страниц сайта, а современные пользователи интернета не отличаются терпеливостью и могут покинуть Ваш сайт, не дождавшись его загрузки.
В результате такая казалась бы незначительная проблема, может привести к серьезным последствиям – уменьшению количества посетителей, объемов продаж, дохода и так далее. Теперь задайте себе вопрос – а оно мне надо?
С минусами разросшейся базы данных разобрались, теперь давайте разберем причины увеличения объема базы данных в Joomla 3 и поговорим, как это исправить.
Причины сильного увеличения объема базы данных
То, что со временем база данных Joomla начинает сильно разрастаться это факт, но не всегда резкий скачек размера базы данных связан с увеличением количества материалов. В моей практике было множество случаев, когда количество материалов было неизменным, а база данных увеличивалась на глазах.
В чем кроется причина увеличения размера базы данных? Ну, во-первых это сторонние расширения, при установке которых в базе данных Joomla добавляются новые таблицы и записи. Кроме того существуют расширения которые не «заметают за собой следы» даже после их удаления – расширение удалено, а его таблицы остались в базе данных.
Другая распространенная причина это расширения, которые установлены по умолчанию в Joomla 3. Например, такие расширения как «Умный поиск», а так же версионность материалов (это не совсем расширение). Давайте рассмотрим их более подробно.
История изменений материалов и таблица jos_ucm_history
В Joomla начиная с версии 3.2, разработчики ввели новую возможность – сохранение изменений (версий) статей. Более того данная опция включена в Joomla по умолчанию.
Что дает данная возможность? Если честно, то для большинства пользователей совершенно ничего кроме увеличения объема базы данных. Суть данной функции заключается в том, что Джумла после изменения материала хранит его старые версии, и не просто одну – две, а сразу десять!
Таким образом, получается что, изменив материал 10 раз, мы получим десять его копий, которые сильно увеличивают размер базы данных. А самое неприятное в этой ситуации то, что данные хранятся в формате Json, а это значит что вместо одного символа (или буквы), мы получаем вот такой набор «\u0412». Получается, что каждый символ в материале будет заменен на 6 других, в результате каждая версия материала больше оригинала приблизительно в 6 раз, а их у нас к тому же 10 штук:
Более подробно про кодировку Json мы поговорим в другой раз, а сейчас главное понять, что одной из главных причин увеличения объема базы данных в Joomla как раз таки является версионность материалов. Что тут можно предпринять? Ну, во-первых сократить количество копий версий материала или же отключить данную опцию вообще. Для этого необходимо перейти на страницу «Настройки менеджера материалов» (нажать на кнопку «Настройки» на странице «Менеджера материалов») и перейти на вкладку «Форма редактирования»:
В большинстве случаев нет необходимости хранить более старые версии материала в базе данных, поэтому я предлагаю отключить данную опцию вообще, а если Вам это все же необходимо, то сократите количество версий до минимума.
Но не все так просто, даже если Вы отключите функцию сохранения версий материалов, в базе данных все же останутся ранее созданные версии. Пользы от них в данном случае нет никакой и лучше от них избавиться. Для этого необходимо перейти в phpMyAdmin, найти таблицу jos_ucm_history, в которой хранятся версии изменений материалов, и очистить её (вместо префикса jos может быть любой другой указанный Вами при установке Joomla):
Для наглядности на скриншоте выше я показал размер той самой таблицы jos_ucm_history, которая хранит историю изменений, и таблицы с материалами jos_content. Размер этих таблиц отличается более чем в два раза и это при том, что материалов совсем мало и они практически не редактировались.
В заключение хочу отметить, что в некоторых случаях можно сократить размер базы данных Joomla до 95%, достаточно только отключить вышеупомянутую функцию и очистить таблицу jos_ucm_history. Кроме того проверьте таблицы jos_ucm_base и jos_ucm_content (не забывайте про префикс) возможно их тоже придется чистить.
На этом, пожалуй, я закончу. В следующей статье (умный поиск и его влияние на размер базы данных) я расскажу, какие еще таблицы можно очистить в базе данных Joomla, тем самым сократив её объем еще больше.